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.
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:
- Open Google Sheets and create a new spreadsheet
- Go to Extensions → Add-ons → Get add-ons
- Search for “Search Console” and install the official Google add-on
- Authorize the add-on to access your Search Console data
- Go to Extensions → Search Console → Open sidebar
- Configure your query:
- Select your property
- Choose date range
- Select dimensions (queries, pages, countries, devices)
- Select metrics (clicks, impressions, CTR, position)
- 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:
- Open Google Sheets → Extensions → Apps Script
- Enable the Search Console API in your Google Cloud project
- Write script to query the API and populate sheets
- 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:
- In Apps Script, go to Triggers (clock icon)
- Add trigger → Select function → Time-driven → Weekly/Daily
- Your data updates automatically
Which method to choose
| Factor | Add-on | Apps Script |
|---|---|---|
| Setup difficulty | Easy | Medium |
| Row limit | 25,000 | 25,000 per request (can paginate) |
| Auto-scheduling | No | Yes |
| Customization | Limited | Full control |
| Best for | Quick reports | Automated 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:
- Filter by date — Pull smaller date ranges and combine
- Filter by dimension — Pull queries separately from pages
- 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 tools — SerpDelta 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.