Automating GSC Data to Google Sheets (Step-by-Step)

Connect Google Search Console to Sheets for automated reporting. Two methods: Google's add-on and Apps Script.

By Ben Peetermans

Manually exporting GSC data every week gets old fast. Connecting GSC to Google Sheets automates the process — your data updates automatically, and you can build dashboards on top of it.

Which method to choose:

  • Use the add-on if you need occasional reports, don’t want to write code, and 25,000 rows is enough.
  • Use Apps Script if you need automated scheduled pulls, more than 25,000 rows (via pagination), or custom data transformations.

When in doubt, start with the add-on. You can always migrate to Apps Script if you hit its limits.

Two main approaches: Use an official add-on (easier) or write Apps Script (more control). Here’s how to do both.

Method 1: Google’s Search Console add-on

Google offers a free Sheets add-on that pulls GSC data directly:

  1. Open Google Sheets and create a new spreadsheet
  2. Go to Extensions → Add-ons → Get add-ons
  3. Search for “Search Console” and install the official Google add-on
  4. Authorize the add-on to access your Search Console data
  5. Go to Extensions → Search Console → Open sidebar
  6. Configure your query:
    • Select your property
    • Choose date range
    • Select dimensions (queries, pages, countries, devices)
    • Select metrics (clicks, impressions, CTR, position)
  7. Click “Request Data”

Limitations:

  • 25,000 row limit (better than web UI’s 1,000)
  • Still not all your data if you have more rows
  • Manual refresh required (no auto-scheduling)

Method 2: Apps Script (more control)

For automated, scheduled data pulls with full control:

  1. Open Google Sheets → Extensions → Apps Script
  2. Enable the Search Console API in your Google Cloud project
  3. Write script to query the API and populate sheets
  4. Set a trigger to run daily/weekly

Basic script structure:

function getSearchConsoleData() {
  var siteUrl = 'https://yoursite.com';
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var request = {
    startDate: '2026-03-01',
    endDate: '2026-03-27',
    dimensions: ['query'],
    rowLimit: 5000
  };

  var response = SearchConsole.SearchAnalytics.query(request, siteUrl);

  // Write data to sheet
  var rows = response.rows || [];
  for (var i = 0; i < rows.length; i++) {
    var row = rows[i];
    sheet.getRange(i + 2, 1, 1, 5).setValues([[
      row.keys[0], row.clicks, row.impressions, row.ctr, row.position
    ]]);
  }
}

Setting up the trigger:

  1. In Apps Script, go to Triggers (clock icon)
  2. Add trigger → Select function → Time-driven → Weekly/Daily
  3. Your data updates automatically

Which method to choose

FactorAdd-onApps Script
Setup difficultyEasyMedium
Row limit25,00025,000 per request (can paginate)
Auto-schedulingNoYes
CustomizationLimitedFull control
Best forQuick reportsAutomated dashboards

For occasional reporting, use the add-on. For production dashboards, invest in Apps Script.

Working around row limits

Even with the API, you’re limited to 25,000 rows per request. Workarounds:

  1. Filter by date — Pull smaller date ranges and combine
  2. Filter by dimension — Pull queries separately from pages
  3. Use multiple requests — Paginate through results

See getting past the 1,000-row limit for more strategies.

Alternatives to building yourself

If Apps Script feels like too much work:

  • Looker Studio — Connects directly to GSC for visualizations
  • Third-party add-ons — Various quality, some paid
  • Dedicated toolsSerpDelta connects to GSC and tracks changes automatically without spreadsheet setup

Building your own gives control but requires maintenance. Choose based on your time and technical comfort.