---
title: "Automate Search Console data pulls so product and data teams stop exporting by hand"
description: "Use the Search Console API, a Sheets add-on, or a short Python script to pull query data on a schedule and feed it into dashboards and BI tools."
canonical: "https://scalewithsearch.com/articles/search-console-api-data-teams"
date: "2026-03-20"
modified: "2026-09-25"
---
## Site navigation

- [Scale With Search](https://scalewithsearch.com/)
- Real estate
  - Real estate
    - [Real estate](https://scalewithsearch.com/for/real-estate)
- Work
  - Start here
    - [Send your brief](https://scalewithsearch.com/work#send-your-brief)
    - [Prepare your six-question brief](https://scalewithsearch.com/work#prepare-your-six-question-brief)
  - Build
    - [Site build, content library with SEO, signal desk](https://scalewithsearch.com/work)
- For your business
  - Trades and home services
    - [Auto body and collision shops](https://scalewithsearch.com/for/auto-body-and-collision-shops)
    - [Foundation and home repair contractors](https://scalewithsearch.com/for/foundation-and-home-repair)
    - [Garage door and fencing contractors](https://scalewithsearch.com/for/garage-door-and-fencing-contractors)
    - [HVAC contractors](https://scalewithsearch.com/for/hvac-contractors)
    - [Janitorial and commercial cleaning companies](https://scalewithsearch.com/for/janitorial-and-commercial-cleaning)
    - [Locksmiths](https://scalewithsearch.com/for/locksmiths)
    - [Moving companies](https://scalewithsearch.com/for/moving-companies)
    - [Pest control companies](https://scalewithsearch.com/for/pest-control-companies)
    - [Plumbing and electrical contractors](https://scalewithsearch.com/for/plumbing-and-electrical-contractors)
    - [Restoration and water or fire damage companies](https://scalewithsearch.com/for/restoration-and-water-fire-damage)
    - [Roofing companies](https://scalewithsearch.com/for/roofing-companies)
    - [Towing companies](https://scalewithsearch.com/for/towing-companies)
    - [Tree services and landscaping companies](https://scalewithsearch.com/for/tree-services-and-landscaping)
    - [Solar installers](https://scalewithsearch.com/for/solar-installation)
    - [General contractors](https://scalewithsearch.com/for/general-contractors-and-construction)
    - [Paving, concrete, and flooring contractors](https://scalewithsearch.com/for/paving)
  - Practices and professional services
    - [Bookkeeping and tax practices](https://scalewithsearch.com/for/bookkeeping-and-tax-practices)
    - [Dental practices](https://scalewithsearch.com/for/dental-practices)
    - [Family and criminal defense law firms](https://scalewithsearch.com/for/family-and-criminal-defense-law-firms)
    - [Med spas and aesthetics practices](https://scalewithsearch.com/for/med-spas-and-aesthetics)
    - [Personal injury law firms](https://scalewithsearch.com/for/personal-injury-law-firms)
    - [Veterinary clinics](https://scalewithsearch.com/for/veterinary-clinics)
    - [Gyms and fitness studios](https://scalewithsearch.com/for/fitness)
    - [Therapy and outpatient health practices](https://scalewithsearch.com/for/therapy-and-outpatient-health)
    - [Medical billing companies](https://scalewithsearch.com/for/medical-billing)
    - [Insurance agencies](https://scalewithsearch.com/for/insurance-agencies)
    - [Financial advisors](https://scalewithsearch.com/for/financial-advisors)
    - [Property management companies](https://scalewithsearch.com/for/property-management)
    - [Recruiting and staffing agencies](https://scalewithsearch.com/for/recruiting-and-staffing)
    - [Architects and interior designers](https://scalewithsearch.com/for/architects-and-interior-designers)
    - [Logistics and supply chain companies](https://scalewithsearch.com/for/logistics-and-supply-chain)
  - Agencies, MSPs, and manufacturing
    - [IT and managed service providers](https://scalewithsearch.com/for/it-and-managed-service-providers)
    - [Machine shops and precision manufacturers](https://scalewithsearch.com/for/machine-shops-and-precision-manufacturing)
    - [Marketing agencies and freelancers](https://scalewithsearch.com/for/marketing-agencies-and-freelancers)
    - [SEO agencies and consultants](https://scalewithsearch.com/for/seo-agencies-and-consultants)
    - [Small manufacturers and fabricators](https://scalewithsearch.com/for/small-manufacturers-and-fabricators)
  - Restaurants, shops, studios, and nonprofits
    - [Restaurants and hospitality businesses](https://scalewithsearch.com/for/restaurants-and-hospitality)
    - [Retail stores and ecommerce sellers](https://scalewithsearch.com/for/retail-and-ecommerce)
    - [Photographers, event planners, and travel agents](https://scalewithsearch.com/for/photographers)
    - [Churches and nonprofits](https://scalewithsearch.com/for/churches-and-nonprofits)
  - [All industries](https://scalewithsearch.com/for/)
- Learn
  - For your office
    - [Office job guides](https://scalewithsearch.com/guides/)
    - [Browser calculators](https://scalewithsearch.com/tools/)
  - Start here
    - [How it works](https://scalewithsearch.com/how-it-works)
    - [Free Starter Kit](https://scalewithsearch.com/kit/business-memory-starter-kit.zip)
    - [Synthetic specimen](https://scalewithsearch.com/specimen/working-session-specimen.zip)
  - Guides
    - [The Complete Guide to Business Memory for AI Agents](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [The Complete Small-Business Guide to AI Agent Governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [The Complete Guide to Leaving Vendor AI Memory](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - Articles by cluster
    - [Business memory](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [Agent governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [Migration and ownership](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - For machines
    - [llms.txt](https://scalewithsearch.com/llms.txt)
    - [llms-full.txt](https://scalewithsearch.com/llms-full.txt)
    - [Machine view](https://scalewithsearch.com/?view=machine)
- Company
  - Evidence
    - [Proof](https://scalewithsearch.com/proof)
  - Company
    - [About](https://scalewithsearch.com/about)

# Automate Search Console data pulls so product and data teams stop exporting by hand.

Every Monday, a data analyst opens Google Search Console, sets a date range, exports a CSV, and pastes it into the dashboard spreadsheet. A product manager does the same for a different property. Each export stops at 1,000 rows, so the long tail of queries never reaches the dashboard. The work takes hours a month and answers the same narrow questions each time.

The web interface limits bulk analysis in three ways. Exports stop at 1,000 rows. Data goes back only 16 months. Filters cannot combine the dimensions that complex questions need.

The Search Console API gives programmatic access to the performance data. That data includes queries, impressions without clicks, average position, click-through rate, device, and country. That data can feed custom dashboards, automated reports, product analytics, and models that find opportunities the web interface hides.

For teams with several properties, thousands of pages, or complex questions, the API turns Search Console from a place to check into a data source. This guide shows non-engineers how to get access and which low-code tools can query the API. It also explains a short Python script and four analyses the web interface cannot run.

## Know what the API adds

| Capability | Web interface | API |
|---|---|---|
| Rows per export or request | 1,000 | Up to 25,000 per request, with paging for more |
| History | 16 months | The same 16 months, but scheduled pulls let you store years in your own database |
| Dimension filters | Limited combinations | Query, page, device, and country together |
| Alerts | Email for some issues | Any rule you write |
| Joins with other data | None | Any system that accepts the export |

A combined filter in the API can answer a question like this: "Show queries that contain 'buy', sent traffic to product pages, came from mobile devices in the US, and had more than 100 impressions."

Scheduled pulls also make alerts possible. Typical rules trigger when:

- organic clicks drop more than 15% week over week;
- a top-10 keyword loses more than 5 positions;
- click-through rate falls on high-impression pages;
- a new keyword enters the top 3 positions.

The API data joins with Google Analytics 4 behavior data, Amplitude product events, or Mixpanel conversion funnels. That lets you follow organic search cohorts through the full product lifecycle. It also feeds dashboards in Looker Studio, Tableau, or Power BI that refresh on their own. For the analysis methods that sit on top of this data, see the [SEO data analysis framework](/articles/seo-data-analysis-framework).

## Set up API access

The setup needs no code. You need a Google account with access to the Search Console property.

### Step 1: enable the API

1. Go to Google Cloud Console at `console.cloud.google.com`.
2. Create a project, or select an existing one.
3. Open `APIs & Services > Library`.
4. Search for "Google Search Console API".
5. Click `Enable`.

### Step 2: create credentials

1. Open `APIs & Services > Credentials`.
2. Click `Create Credentials > OAuth client ID`.
3. If Google asks, configure the consent screen. Choose internal use if the users are inside your organization.
4. Set the application type to `Desktop app`.
5. Download the JSON credentials file.

Store the credentials file securely. It works as an access key.

### Step 3: confirm property access

The API returns data only for properties where your Google account is a verified owner or has full permission. Check your access in the Search Console web interface first. You cannot pull data for a competitor's site: access follows Search Console permissions.

The API has no usage charge. Google applies quotas instead. As of September 2026, Google's usage limits documentation lists 1,200 Search Analytics queries per minute per site and per user. The per-project limits are 40,000 queries per minute and 30,000,000 per day. Confirm the current figures there before you design a large job.

Typical team use rarely reaches the limit. If a job does, retry with exponential backoff: wait, then retry with a longer delay each time.

## Query the API without code

### Search Analytics for Sheets

Search Analytics for Sheets is a Google Sheets add-on that queries the Search Console API.

To install it:

1. Open Google Sheets.
2. Choose `Extensions > Add-ons > Get add-ons`.
3. Search for "Search Analytics for Sheets".
4. Install it and grant access.

To run a request:

1. Choose `Extensions > Search Analytics for Sheets > Create new request`.
2. Select the property.
3. Choose the date range.
4. Select dimensions: Query, Page, Device, Country, or Search Appearance.
5. Add filters if you need them.
6. Run the request. The data fills the sheet.

The add-on needs no code. You can build pivot tables and charts in the sheet and share reports through normal Sheets permissions. The add-on is slower on very large datasets and less flexible than a script.

### Supermetrics

Supermetrics connects Search Console to Google Sheets, Looker Studio, Excel, and BI tools through a visual interface.

1. Install the Supermetrics add-on or extension for the target platform.
2. Connect it to Search Console.
3. Build queries from menus: dimensions, metrics, filters, and date ranges.
4. Schedule refreshes, daily or weekly.

Supermetrics combines many sources in one place, such as Search Console, Google Analytics, and Meta Ads, and comes with vendor support. It is a paid subscription. When this article was first published (March 2026), the multi-platform enterprise tier cost about ten times the entry plan for the Sheets connector. For a team, that cost adds up, and the customization is narrower than code.

### Looker Studio

Looker Studio, which Google renamed from Data Studio in October 2022, has a built-in Search Console connector. Create a report, add a data source, choose Google Search Console, and select the property. Then build tables, time series, and scorecards. It is free, refreshes on its own, and shares like any Google file. The [Looker Studio SEO reporting guide](/articles/looker-studio-seo-reporting) walks through a full report build.

## Query the API with a short Python script

A team with basic technical skill, or the will to learn, gets full flexibility from Python.

### Set up Python once

Install a currently supported Python 3 release from `python.org`. Then install the libraries:

```bash
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client pandas
```

### Run a basic query

Save this script as `search_console_query.py` in the same folder as the credentials file, renamed to `credentials.json`:

```python
import os
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request
from google_auth_oauthlib.flow import InstalledAppFlow
import pandas as pd

SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']

# Reuse a saved token; sign in through the browser only when needed
creds = None
if os.path.exists('token.json'):
    creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server(port=0)
    with open('token.json', 'w') as token:
        token.write(creds.to_json())

service = build('searchconsole', 'v1', credentials=creds)

request = {
    'startDate': '2026-01-01',
    'endDate': '2026-01-31',
    'dimensions': ['query', 'page'],
    'rowLimit': 25000
}

response = service.searchanalytics().query(
    siteUrl='https://yoursite.com',
    body=request
).execute()

data = []
for row in response.get('rows', []):
    query, page = row['keys'][0], row['keys'][1]
    data.append([query, page, row['clicks'], row['impressions'], row['ctr'], row['position']])

df = pd.DataFrame(data, columns=['Query', 'Page', 'Clicks', 'Impressions', 'CTR', 'Position'])
df.to_csv('search_console_data.csv', index=False)
print(f"Exported {len(df)} rows to search_console_data.csv")
```

Run it:

```bash
python search_console_query.py
```

The first run opens a browser to sign in and saves `token.json`. Later runs reuse the saved token. Keep `token.json` as private as the credentials file.

To change the pull, edit the request:

- Change `startDate` and `endDate` for a different range.
- Add `device`, `country`, or `searchAppearance` to `dimensions`.
- Add a filter: `'dimensionFilterGroups': [{'filters': [{'dimension': 'query', 'operator': 'contains', 'expression': 'keyword'}]}]`.
- For more than 25,000 rows, repeat the request with `startRow` set to 25000, 50000, and so on.

### Schedule a daily pull

A scheduled script builds a history beyond the 16-month window. Append each day's data to a database or cloud storage.

On Windows, use Task Scheduler:

1. Open Task Scheduler and choose `Create Basic Task`.
2. Set the trigger to daily at a chosen time.
3. Set the action to `Start a program`, with `python.exe` and the script path.

On macOS or Linux, use cron:

```bash
crontab -e
# Add this line to run daily at 6 a.m.:
0 6 * * * /usr/bin/python3 /path/to/search_console_query.py
```

For serverless scheduling, deploy the script to Google Cloud Functions, AWS Lambda, or Azure Functions.

The same daily job can send alerts. Compare the current week with the previous week. Send an email or Slack message when the drop passes a threshold, such as 15%.

## Answer four questions the web interface cannot

### Which high-impression queries underperform?

Pull the `query` dimension for a month with `rowLimit` at 25,000. Then, in pandas or Excel:

1. Calculate click-through rate as clicks divided by impressions.
2. Keep queries with more than 100 impressions.
3. Sort by click-through rate, lowest first.

The top of the list is high-impression, low-click queries. Their pages need better titles and descriptions.

### How did the key terms move month over month?

Pull `query` and `date` with a filter on each target keyword:

```python
request = {
    'startDate': '2026-01-01',
    'endDate': '2026-01-31',
    'dimensions': ['query', 'date'],
    'dimensionFilterGroups': [{
        'filters': [{
            'dimension': 'query',
            'operator': 'equals',
            'expression': 'target keyword'
        }]
    }]
}
```

Run it each month. Calculate the average position per month and compare it with the previous month. Flag every keyword that dropped more than 3 positions for investigation.

### Do pages perform differently on mobile and desktop?

Pull `page` and `device`. Pivot by device and calculate the ratio of mobile click-through rate to desktop click-through rate. A page with a much lower mobile rate needs mobile UX work.

### Which landing pages attract traffic but fail to engage?

Join Search Console with the Google Analytics 4 API:

1. Pull clicks per page from Search Console.
2. Pull bounce rate and engagement time per page from GA4.
3. Join the two datasets on the page URL.
4. List high-traffic pages with high bounce rates.

This takes two APIs, but it shows pages that win the click and then lose the visitor. The [dashboard build guide for SEO](/articles/building-seo-dashboard-guide) shows how to present joined data like this.

## Send the data to BI tools

**Tableau and Power BI.** A script writes the API data to a SQL database or to cloud storage such as Amazon S3 or BigQuery each day. Tableau or Power BI connects to that store and refreshes on the same schedule. These tools give advanced visualization and combine Search Console with Google Analytics and CRM data.

**BigQuery.** BigQuery suits large-scale storage and joins with product analytics, CRM, and advertising data. Since February 2023, Search Console has offered a native bulk data export to BigQuery, which sends daily data without a script. A script remains an option when you need a custom shape. Pull through the API, load into BigQuery tables, and append daily. Either way, you query with SQL or connect a BI tool to BigQuery.

## Match the method to the team

A team without developers can start with the Sheets add-on, Supermetrics, or the Looker Studio connector. Automation and custom dashboards go further with basic Python. Prebuilt scripts like the one above need only small edits. A data analyst who owns organic reporting finds role-specific methods in the [SEO guide for data analysts](/articles/seo-for-data-analysts).

----

```text
                  .|########||.                                       .|########||.                                       .|########||.
               |##||.      .||##|.                                 |##||.      .||##|.                                 |##||.      .||##|.
             |#|.              .|#|.                             |#|.              .|#|.                             |#|.              .|#|.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
        .#.                          .#|                    .#.                          .#|                    .#.                          .#|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
      |#             ......             #|                |#             ......             #|                |#             ......             #|
     .#           ||#########|           #|              .#           ||#########|           #|              .#           ||#########|           #|
    .#.         |######||######|.        .#.            .#.         |######||######|.        .#.            .#.         |######||######|.        .#.
    #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#
   ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||
   #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #
 ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||
 #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#
 #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.
.|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||
||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||
#.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#
#    .||####|###########################|.     #    #    .||####|###########################|.     #    #    .||####|###########################|.     #
#      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #
#      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #
#      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #
#      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #
#   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #
#. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#
|| |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||
|| ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||
.# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.
 #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#
 ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||
  #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.
   ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||
    #.        .######|#|#########|        .#            #.        .######|#|#########|        .#            #.        .######|#|#########|        .#
    .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.
     |#           ||########||           #.              |#           ||########||           #.              |#           ||########||           #.
      |#             ......             #|                |#             ......             #|                |#             ......             #|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
        |#.                          .#.                    |#.                          .#.                    |#.                          .#.
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
            .|#|.              .|#|.                            .|#|.              .|#|.                            .|#|.              .|#|.
               |##||.      .||##|                                  |##||.      .||##|                                  |##||.      .||##|
                 .||########||.                                      .||########||.                                      .||########||.

Scale With Search  2026  [scalewithsearch.com](https://scalewithsearch.com)
```
